package com.zmn.oms.business.interfaces.messageV1;

import com.zmn.oms.common.constant.MessageRuleIdConsts;
import com.zmn.oms.common.constant.MessageRuleIdMapper;
import com.zmn.oms.model.dto.messageV1.SendMessageRespDTO;

/**
 * 类描述：
 *
 * @author yule
 * @date 2020/12/20 22:45
 */
public interface SendOrderMessageService {

    /**
     * 订单节点 业务逻辑多用户消息发送
     *
     * @param sendMessageRespDTO
     * @return
     */
    boolean sendOrderMessage(SendMessageRespDTO sendMessageRespDTO);

    /**
     * 指定订单节点消息发送 多用户发送，且实现了 微信 > 短信 逻辑
     * 如新增节点，请先配置节点信息 和 检查配置平台节点对应的规则ID映射信息，且需要实现方法实现，配置如下
     *
     * @see MessageRuleIdConsts 节点配置
     * @see MessageRuleIdMapper 映射配置
     */
    boolean sendDesignatedNodeMarkMessage(Long orderId, Integer nodeMark);

    /**
     * 该方法是 指定订单消息节点 多用户发送，且实现了 微信>短信 逻辑（直接发送，不走队列）
     * 如新增节点，请先配置节点信息和规则ID信息，且需要方法实现，配置如下
     *
     * @see MessageRuleIdConsts
     * <p>
     * 如只需指定某单个用户，直接发送微信消息，请调用微信发送接口即可，如下：
     * @see com.zmn.oms.business.interfaces.messageV1.wechat.MessageWeChatTemplateService#sendDesignatedUserWeChatTemplate(java.lang.Long, java.lang.Integer, java.lang.Long)
     */
    boolean sendDesignatedRuleIdMessage(Long orderId, Integer nodeMark, Integer ruleId);

}
